// 引入axios 和 qs
import axios from "axios";
// import qs from "qs";
// import local from "utils/local";
import {message } from 'antd' //静态提示方法

// 服务器地址 写上以后 所有的请求 会自动在前面拼接这个地址
// axios.defaults.baseURL = "http://172.16.6.254:5000";
axios.defaults.baseURL = "http://127.0.0.1:5000";
axios.defaults.timeout = 5000; // 超时

/**
 * 请求拦截：就是在发送请求出去之前,做一些准备、检查工作
 */
axios.interceptors.request.use((config) => {
    //   let token = local.get("t_k") || ""; // 取出本地token
    let token = localStorage.getItem("t_k") || "";
    if (token) {
        config.headers.Authorization = token; // 统一在请求头携带token，因为其它接口者需要(除登录外)
    }
    return config;
});

/**
 * 响应拦截： 后端响应数据之后，先拦截下来，可以进行某些处理后再接收
 * 1.这里当请求成功后，我们从axios在data取到数据
 * 2.统一作错误提示，如code为1，提示错误信息
 */
axios.interceptors.response.use(
    (response) => {
        console.log("响应拦截：",response,"\n")
        // 成功：有code 和 msg
        if (response.data.code !== undefined && response.data.msg !== undefined) {
            let { code, msg } = response.data; // 取出code 和 msg
            // 提示
            // message.success("请求成功！") //交给具体的业务地方显示
            return Promise.resolve(response.data); // 从data中取数据
        }
        return response;
    },
    (error) => {
        if (error.response) {
            // // 请求成功但状态码不在 2xx 范围
            // console.log(error.response.data);
            // console.log(error.response.status);
            // console.log(error.response.headers);

            message.error("请求已响应，请确权限。状态码: "+error.response.status)

        } else if (error.request) {
            // 请求发出 但没有收到响应
            message.error("请求超时，请确检查网络连接或服务是否启动")
            console.log(error.request);
        } else {
            // 在设置请求时发生了错误
            console.log('Error', error.message);
            // 处理错误响应
            message.error("在设置请求时发生了错误:"+error.response.status)
        }

        return Promise.reject(error);
    }
);

export default axios;